url <- 'https://raw.githubusercontent.com/kyleknox3/STA553/main/week6/LifeIncomePopulation.csv'
data <- read.csv(url)
income <- na.omit(data)

data2015 <- income %>%
  filter(year == 2015)

write.csv(data2015, "/Users/kyleknox/Documents/M.S. Applied Statistics/SPRING 2024/STA533/week6/data2015.csv", row.names = FALSE)

regions <- c("Asia" = "#332288", "Europe" = "#117733", "Africa" = "#44AA99", "Americas" = "#88CCEE", "Oceania" = "#AA4499")

gg <- ggplot(data2015, aes(x = lifeExp, y = income, size = population, 
      color = region, text = paste("Country:", country,"<br>Population:", population))) +
  geom_point(alpha = 0.7) + 
  scale_size_continuous(range = c(1, 20)) + 
  theme_minimal() +
  labs(title = "Life Expectancy vs. Income in 2015",
       x = "Life Expectancy",
       y = "Income") +
  scale_color_manual(values = regions, name = "Region") + 
  geom_point(shape = 21, colour = "black", fill = NA) 


plotly_gg <- ggplotly(gg, tooltip = "text")

plotly_gg
url <- 'https://raw.githubusercontent.com/kyleknox3/STA553/main/week6/LifeIncomePopulation.csv'
data <- read.csv(url)
income2 <- na.omit(data)

regions <- c("Asia" = "#332288", "Europe" = "#117733", "Africa" = "#44AA99", "Americas" = "#88CCEE", "Oceania" = "#AA4499")

plot <- ggplot(income2, aes(x = lifeExp, y = income, size = population, color = region)) +
  geom_point(alpha = 0.7, show.legend = TRUE, aes(group = year)) +
  scale_size(range = c(2, 12), name = "Population Size") +
  scale_color_manual(values = regions, name = "Region") +
  labs(title = 'Year: {frame_time}', x = 'Life Expectancy', y = 'Income') +
  theme_minimal() +
  transition_time(year) +
  ease_aes('linear')

animate(plot, width = 900, height = 500, duration = 30)


A Look Inside the Plot

There has been a significant increase in the average life expectancy globally since the early 1800s. The shift is more prevalent in the early 20th century. These life expectancy improvements could be related to advancements in healthcare, nutrition, and living conditions over time.

Income has an overall positive trend, with a steep incline after the mid 20th century. Some causes for these increases could be a result of industrialization, globalization, and technological advances that have influenced productivity. There is a significant increase in income in the late 20th century, which could be indicative of economic expansion.

The worlds population has also shown significant growth since the 1800s, with an acceleration in the rate of increase from the 20th century to present day. This increased population could be a result of decreased mortality rates, medical advancements, and other factors leading to higher birth rates and lower death rates. With a continued increase in the global population challenges like resource management, sustainability, and a detrimental environmental impact will arise.

With the increased income, population, and life expectancy over the past few centuries, it shows the the global economic increases for the worlds population. However, these increases do provide challenges for the future in sustainability and the distribution of resources. These challenges are not just limited regionally but also globally.



LS0tCnRpdGxlOiAiTGlmZSBFeHBlY3RhbmN5IGFuZCBJbmNvbWUgZm9yIHRoZSBZZWFyIDIwMTUiCmF1dGhvcjogIkt5bGUgS25veCIKZGF0ZTogIldlZWsgNiIKb3V0cHV0OgogIGh0bWxfZG9jdW1lbnQ6IAogICAgdG9jOiB5ZXMKICAgIHRvY19kZXB0aDogNAogICAgdG9jX2Zsb2F0OiB5ZXMKICAgIGZpZ193aWR0aDogNgogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMKICAgIHRvY19jb2xsYXBzZWQ6IHllcwogICAgY29kZV9mb2xkaW5nOiBoaWRlCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMKICAgIHNtb290aF9zY3JvbGw6IHRydWUKICAgIHRoZW1lOiByZWFkYWJsZQogICAgZmlnX2hlaWdodDogNAotLS0KICAKICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgogIAogIGRpdiNUT0MgbGkgewpsaXN0LXN0eWxlOm5vbmU7CmJhY2tncm91bmQtY29sb3I6bGlnaHRncmF5OwpiYWNrZ3JvdW5kLWltYWdlOm5vbmU7CmJhY2tncm91bmQtcmVwZWF0Om5vbmU7CmJhY2tncm91bmQtcG9zaXRpb246MDsKZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7CmNvbG9yOiAjNzgwYzBjOwogIH0KCi8qIG1vdXNlIG92ZXIgbGluayAqLwogIGRpdiNUT0MgYTpob3ZlciB7CmNvbG9yOiByZWQ7Cn0KCi8qIHVudmlzaXRlZCBsaW5rICovCiAgZGl2I1RPQyBhOmxpbmsgewpjb2xvcjogYmx1ZTsKfQoKCgpoMS50aXRsZSB7CiAgZm9udC1zaXplOiAyNHB4OwogIGNvbG9yOiBEYXJrYmx1ZTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7CiAgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsKfQpoNC5hdXRob3IgeyAKICBmb250LXNpemU6IDE4cHg7CiAgZm9udC1mYW1pbHk6ICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7CiAgY29sb3I6IERhcmtSZWQ7CiAgdGV4dC1hbGlnbjogY2VudGVyOwp9Cmg0LmRhdGUgeyAKICBmb250LXNpemU6IDE4cHg7CiAgZm9udC1mYW1pbHk6ICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7CiAgY29sb3I6IERhcmtCbHVlOwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQpoMSB7CiAgZm9udC1zaXplOiAyMnB4OwogIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOwogIGNvbG9yOiBkYXJrcmVkOwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQpoMiB7IC8KICAgIGZvbnQtc2l6ZTogMThweDsKICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsKICBjb2xvcjogbmF2eTsKICB0ZXh0LWFsaWduOiBsZWZ0Owp9CgpoMyB7IAogIGZvbnQtc2l6ZTogMTVweDsKICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsKICBjb2xvcjogbmF2eTsKICB0ZXh0LWFsaWduOiBsZWZ0Owp9CgpoNCB7IC8qIEhlYWRlciA0IC0gYW5kIHRoZSBhdXRob3IgYW5kIGRhdGEgaGVhZGVycyB1c2UgdGhpcyB0b28gICovCiAgICBmb250LXNpemU6IDE4cHg7CiAgZm9udC1mYW1pbHk6ICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7CiAgY29sb3I6IGRhcmtyZWQ7CiAgdGV4dC1hbGlnbjogbGVmdDsKfQoKLyogdW52aXNpdGVkIGxpbmsgKi8KICBhOmxpbmsgewogICAgY29sb3I6IGdyZWVuOwogIH0KCi8qIHZpc2l0ZWQgbGluayAqLwogIGE6dmlzaXRlZCB7CiAgICBjb2xvcjogZ3JlZW47CiAgfQoKLyogbW91c2Ugb3ZlciBsaW5rICovCiAgYTpob3ZlciB7CiAgICBjb2xvcjogcmVkOwogIH0KCi8qIHNlbGVjdGVkIGxpbmsgKi8KICBhOmFjdGl2ZSB7CiAgICBjb2xvcjogeWVsbG93OwogIH0KCjwvc3R5bGU+CiAgCiAgCiAgYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CiMgY29kZSBjaHVuayBzcGVjaWZpZXMgd2hldGhlciB0aGUgUiBjb2RlLCB3YXJuaW5ncywgYW5kIG91dHB1dCAKIyB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBvdXRwdXQgZmlsZXMuCm9wdGlvbnMocmVwb3MgPSBsaXN0KENSQU49Imh0dHA6Ly9jcmFuLnJzdHVkaW8uY29tLyIpKQppZiAoIXJlcXVpcmUoInRpZHl2ZXJzZSIpKSB7CiAgaW5zdGFsbC5wYWNrYWdlcygidGlkeXZlcnNlIikKICBsaWJyYXJ5KHRpZHl2ZXJzZSkKfQppZiAoIXJlcXVpcmUoImtuaXRyIikpIHsKICBpbnN0YWxsLnBhY2thZ2VzKCJrbml0ciIpCiAgbGlicmFyeShrbml0cikKfQppZiAoIXJlcXVpcmUoImNvd3Bsb3QiKSkgewogIGluc3RhbGwucGFja2FnZXMoImNvd3Bsb3QiKQogIGxpYnJhcnkoY293cGxvdCkKfQppZiAoIXJlcXVpcmUoImxhdGV4MmV4cCIpKSB7CiAgaW5zdGFsbC5wYWNrYWdlcygibGF0ZXgyZXhwIikKICBsaWJyYXJ5KGxhdGV4MmV4cCkKfQppZiAoIXJlcXVpcmUoInBsb3RseSIpKSB7CiAgaW5zdGFsbC5wYWNrYWdlcygicGxvdGx5IikKICBsaWJyYXJ5KHBsb3RseSkKfQppZiAoIXJlcXVpcmUoImdhcG1pbmRlciIpKSB7CiAgaW5zdGFsbC5wYWNrYWdlcygiZ2FwbWluZGVyIikKICBsaWJyYXJ5KGdhcG1pbmRlcikKfQppZiAoIXJlcXVpcmUoInBuZyIpKSB7CiAgaW5zdGFsbC5wYWNrYWdlcygicG5nIikgICAgICAgICAgICAgIyBJbnN0YWxsIHBuZyBwYWNrYWdlCiAgbGlicmFyeSgicG5nIikKfQppZiAoIXJlcXVpcmUoIlJDdXJsIikpIHsKICBpbnN0YWxsLnBhY2thZ2VzKCJSQ3VybCIpICAgICAgICAgICAgICMgSW5zdGFsbCBSQ3VybCBwYWNrYWdlCiAgbGlicmFyeSgiUkN1cmwiKQp9CmlmICghcmVxdWlyZSgiY29sb3VycGlja2VyIikpIHsKICBpbnN0YWxsLnBhY2thZ2VzKCJjb2xvdXJwaWNrZXIiKSAgICAgICAgICAgICAgCiAgbGlicmFyeSgiY29sb3VycGlja2VyIikKfQppZiAoIXJlcXVpcmUoImdpZnNraSIpKSB7CiAgaW5zdGFsbC5wYWNrYWdlcygiZ2lmc2tpIikgICAgICAgICAgICAgIAogIGxpYnJhcnkoImdpZnNraSIpCn0KaWYgKCFyZXF1aXJlKCJtYWdpY2siKSkgewogIGluc3RhbGwucGFja2FnZXMoIm1hZ2ljayIpICAgICAgICAgICAgICAKICBsaWJyYXJ5KCJtYWdpY2siKQp9CmlmICghcmVxdWlyZSgiZ3JEZXZpY2VzIikpIHsKICBpbnN0YWxsLnBhY2thZ2VzKCJnckRldmljZXMiKSAgICAgICAgICAgICAgCiAgbGlicmFyeSgiZ3JEZXZpY2VzIikKfQojIyMgZ2dwbG90IGFuZCBleHRlbnNpb25zCmlmICghcmVxdWlyZSgiZ2dwbG90MiIpKSB7CiAgaW5zdGFsbC5wYWNrYWdlcygiZ2dwbG90MiIpICAgICAgICAgICAgICAKICBsaWJyYXJ5KCJnZ3Bsb3QyIikKfQppZiAoIXJlcXVpcmUoImdnYW5pbWF0ZSIpKSB7CiAgaW5zdGFsbC5wYWNrYWdlcygiZ2dhbmltYXRlIikgICAgICAgICAgICAgIAogIGxpYnJhcnkoImdnYW5pbWF0ZSIpCn0KaWYgKCFyZXF1aXJlKCJnZ3JpZGdlcyIpKSB7CiAgaW5zdGFsbC5wYWNrYWdlcygiZ2dyaWRnZXMiKSAgICAgICAgICAgICAgCiAgbGlicmFyeSgiZ2dyaWRnZXMiKQp9CmlmICghcmVxdWlyZSgiZHBseXIiKSkgewogIGluc3RhbGwucGFja2FnZXMoImRwbHlyIikgICAgICAgICAgICAgIAogIGxpYnJhcnkoImRwbHlyIikKfQppZiAoIXJlcXVpcmUoImh0bWx0b29scyIpKSB7CiAgaW5zdGFsbC5wYWNrYWdlcygiaHRtbHRvb2xzIikgICAgICAgICAgICAgIAogIGxpYnJhcnkoImh0bWx0b29scyIpCn0KaWYgKCFyZXF1aXJlKCJybWFya2Rvd24iKSkgewogIGluc3RhbGwucGFja2FnZXMoInJtYXJrZG93biIpICAgICAgICAgICAgICAKICBsaWJyYXJ5KCJybWFya2Rvd24iKQp9CiMga25pdHI6Om9wdHNfa25pdCRzZXQocm9vdC5kaXIgPSAiL1VzZXJzL2t5bGVrbm94L0RvY3VtZW50cy9NLlMuIEFwcGxpZWQgU3RhdGlzdGljcy9TUFJJTkcgMjAyNC9TVEE1MzMvd2VlazYpCiMga25pdHI6Om9wdHNfa25pdCRzZXQocm9vdC5kaXIgPSAiQzpcXFNUQTQ5MFxcdzA1IikKCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSwgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5nID0gRkFMU0UsICAgCiAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBUUlVFLCAgIAogICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IEZBTFNFKQpgYGAKYGBge3IgY29kZSwgZmlnLndpZHRoPTEwLCBmaWcuaGVpZ2h0PTYuOH0KdXJsIDwtICdodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20va3lsZWtub3gzL1NUQTU1My9tYWluL3dlZWs2L0xpZmVJbmNvbWVQb3B1bGF0aW9uLmNzdicKZGF0YSA8LSByZWFkLmNzdih1cmwpCmluY29tZSA8LSBuYS5vbWl0KGRhdGEpCgpkYXRhMjAxNSA8LSBpbmNvbWUgJT4lCiAgZmlsdGVyKHllYXIgPT0gMjAxNSkKCndyaXRlLmNzdihkYXRhMjAxNSwgIi9Vc2Vycy9reWxla25veC9Eb2N1bWVudHMvTS5TLiBBcHBsaWVkIFN0YXRpc3RpY3MvU1BSSU5HIDIwMjQvU1RBNTMzL3dlZWs2L2RhdGEyMDE1LmNzdiIsIHJvdy5uYW1lcyA9IEZBTFNFKQoKcmVnaW9ucyA8LSBjKCJBc2lhIiA9ICIjMzMyMjg4IiwgIkV1cm9wZSIgPSAiIzExNzczMyIsICJBZnJpY2EiID0gIiM0NEFBOTkiLCAiQW1lcmljYXMiID0gIiM4OENDRUUiLCAiT2NlYW5pYSIgPSAiI0FBNDQ5OSIpCgpnZyA8LSBnZ3Bsb3QoZGF0YTIwMTUsIGFlcyh4ID0gbGlmZUV4cCwgeSA9IGluY29tZSwgc2l6ZSA9IHBvcHVsYXRpb24sIAogICAgICBjb2xvciA9IHJlZ2lvbiwgdGV4dCA9IHBhc3RlKCJDb3VudHJ5OiIsIGNvdW50cnksIjxicj5Qb3B1bGF0aW9uOiIsIHBvcHVsYXRpb24pKSkgKwogIGdlb21fcG9pbnQoYWxwaGEgPSAwLjcpICsgCiAgc2NhbGVfc2l6ZV9jb250aW51b3VzKHJhbmdlID0gYygxLCAyMCkpICsgCiAgdGhlbWVfbWluaW1hbCgpICsKICBsYWJzKHRpdGxlID0gIkxpZmUgRXhwZWN0YW5jeSB2cy4gSW5jb21lIGluIDIwMTUiLAogICAgICAgeCA9ICJMaWZlIEV4cGVjdGFuY3kiLAogICAgICAgeSA9ICJJbmNvbWUiKSArCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IHJlZ2lvbnMsIG5hbWUgPSAiUmVnaW9uIikgKyAKICBnZW9tX3BvaW50KHNoYXBlID0gMjEsIGNvbG91ciA9ICJibGFjayIsIGZpbGwgPSBOQSkgCgoKcGxvdGx5X2dnIDwtIGdncGxvdGx5KGdnLCB0b29sdGlwID0gInRleHQiKQoKcGxvdGx5X2dnCgpgYGAKYGBge3IgcGxvdC1hbmltYXRpb24sIGZpZy53aWR0aD0xMCwgZmlnLmhlaWdodD02Ljh9CnVybCA8LSAnaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2t5bGVrbm94My9TVEE1NTMvbWFpbi93ZWVrNi9MaWZlSW5jb21lUG9wdWxhdGlvbi5jc3YnCmRhdGEgPC0gcmVhZC5jc3YodXJsKQppbmNvbWUyIDwtIG5hLm9taXQoZGF0YSkKCnJlZ2lvbnMgPC0gYygiQXNpYSIgPSAiIzMzMjI4OCIsICJFdXJvcGUiID0gIiMxMTc3MzMiLCAiQWZyaWNhIiA9ICIjNDRBQTk5IiwgIkFtZXJpY2FzIiA9ICIjODhDQ0VFIiwgIk9jZWFuaWEiID0gIiNBQTQ0OTkiKQoKcGxvdCA8LSBnZ3Bsb3QoaW5jb21lMiwgYWVzKHggPSBsaWZlRXhwLCB5ID0gaW5jb21lLCBzaXplID0gcG9wdWxhdGlvbiwgY29sb3IgPSByZWdpb24pKSArCiAgZ2VvbV9wb2ludChhbHBoYSA9IDAuNywgc2hvdy5sZWdlbmQgPSBUUlVFLCBhZXMoZ3JvdXAgPSB5ZWFyKSkgKwogIHNjYWxlX3NpemUocmFuZ2UgPSBjKDIsIDEyKSwgbmFtZSA9ICJQb3B1bGF0aW9uIFNpemUiKSArCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IHJlZ2lvbnMsIG5hbWUgPSAiUmVnaW9uIikgKwogIGxhYnModGl0bGUgPSAnWWVhcjoge2ZyYW1lX3RpbWV9JywgeCA9ICdMaWZlIEV4cGVjdGFuY3knLCB5ID0gJ0luY29tZScpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIHRyYW5zaXRpb25fdGltZSh5ZWFyKSArCiAgZWFzZV9hZXMoJ2xpbmVhcicpCgphbmltYXRlKHBsb3QsIHdpZHRoID0gOTAwLCBoZWlnaHQgPSA1MDAsIGR1cmF0aW9uID0gMzApCmBgYAo8YnI+Cjxicj4KPGRpdiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+PHNwYW4gc3R5bGU9ImNvbG9yOiByZWQ7Ij5BIExvb2sgSW5zaWRlIHRoZSBQbG90PC9zcGFuPjwvZGl2PgoKPGRpdiBzdHlsZT0id2lkdGg6IDk1JTsgbWFyZ2luOiAwIGF1dG87IHRleHQtYWxpZ246IGp1c3RpZnk7IGJvcmRlcjogMXB4IHNvbGlkICNjY2M7IHBhZGRpbmc6IDEwcHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij4KICA8cCBzdHlsZT0idGV4dC1hbGlnbjoganVzdGlmeTsiPgpUaGVyZSBoYXMgYmVlbiBhIHNpZ25pZmljYW50IGluY3JlYXNlIGluIHRoZSBhdmVyYWdlIGxpZmUgZXhwZWN0YW5jeSBnbG9iYWxseSBzaW5jZSB0aGUgZWFybHkgMTgwMHMuICBUaGUgc2hpZnQgaXMgbW9yZSBwcmV2YWxlbnQgaW4gdGhlIGVhcmx5IDIwdGggY2VudHVyeS4gIFRoZXNlIGxpZmUgZXhwZWN0YW5jeSBpbXByb3ZlbWVudHMgY291bGQgYmUgcmVsYXRlZCB0byBhZHZhbmNlbWVudHMgaW4gaGVhbHRoY2FyZSwgbnV0cml0aW9uLCBhbmQgbGl2aW5nIGNvbmRpdGlvbnMgb3ZlciB0aW1lLiA8YnI+Cjxicj4KSW5jb21lIGhhcyBhbiBvdmVyYWxsIHBvc2l0aXZlIHRyZW5kLCB3aXRoIGEgc3RlZXAgaW5jbGluZSBhZnRlciB0aGUgbWlkIDIwdGggY2VudHVyeS4gIFNvbWUgY2F1c2VzIGZvciB0aGVzZSBpbmNyZWFzZXMgY291bGQgYmUgYSByZXN1bHQgb2YgaW5kdXN0cmlhbGl6YXRpb24sIGdsb2JhbGl6YXRpb24sIGFuZCB0ZWNobm9sb2dpY2FsIGFkdmFuY2VzIHRoYXQgaGF2ZSBpbmZsdWVuY2VkIHByb2R1Y3Rpdml0eS4gVGhlcmUgaXMgYSBzaWduaWZpY2FudCBpbmNyZWFzZSBpbiBpbmNvbWUgaW4gdGhlIGxhdGUgMjB0aCBjZW50dXJ5LCB3aGljaCBjb3VsZCBiZSBpbmRpY2F0aXZlIG9mIGVjb25vbWljIGV4cGFuc2lvbi4gPGJyPgo8YnI+ClRoZSB3b3JsZHMgcG9wdWxhdGlvbiBoYXMgYWxzbyBzaG93biBzaWduaWZpY2FudCBncm93dGggc2luY2UgdGhlIDE4MDBzLCB3aXRoIGFuIGFjY2VsZXJhdGlvbiBpbiB0aGUgcmF0ZSBvZiBpbmNyZWFzZSBmcm9tIHRoZSAyMHRoIGNlbnR1cnkgdG8gcHJlc2VudCBkYXkuICBUaGlzIGluY3JlYXNlZCBwb3B1bGF0aW9uIGNvdWxkIGJlIGEgcmVzdWx0IG9mIGRlY3JlYXNlZCBtb3J0YWxpdHkgcmF0ZXMsIG1lZGljYWwgYWR2YW5jZW1lbnRzLCBhbmQgb3RoZXIgZmFjdG9ycyBsZWFkaW5nIHRvIGhpZ2hlciBiaXJ0aCByYXRlcyBhbmQgbG93ZXIgZGVhdGggcmF0ZXMuIFdpdGggYSBjb250aW51ZWQgaW5jcmVhc2UgaW4gdGhlIGdsb2JhbCBwb3B1bGF0aW9uIGNoYWxsZW5nZXMgbGlrZSByZXNvdXJjZSBtYW5hZ2VtZW50LCBzdXN0YWluYWJpbGl0eSwgYW5kIGEgZGV0cmltZW50YWwgZW52aXJvbm1lbnRhbCBpbXBhY3Qgd2lsbCBhcmlzZS48YnI+Cjxicj4KV2l0aCB0aGUgaW5jcmVhc2VkIGluY29tZSwgcG9wdWxhdGlvbiwgYW5kIGxpZmUgZXhwZWN0YW5jeSBvdmVyIHRoZSBwYXN0IGZldyBjZW50dXJpZXMsIGl0IHNob3dzIHRoZSB0aGUgZ2xvYmFsIGVjb25vbWljIGluY3JlYXNlcyBmb3IgdGhlIHdvcmxkcyBwb3B1bGF0aW9uLiAgSG93ZXZlciwgdGhlc2UgaW5jcmVhc2VzIGRvIHByb3ZpZGUgY2hhbGxlbmdlcyBmb3IgdGhlIGZ1dHVyZSBpbiBzdXN0YWluYWJpbGl0eSBhbmQgdGhlIGRpc3RyaWJ1dGlvbiBvZiByZXNvdXJjZXMuIFRoZXNlIGNoYWxsZW5nZXMgYXJlIG5vdCBqdXN0IGxpbWl0ZWQgcmVnaW9uYWxseSBidXQgYWxzbyBnbG9iYWxseS48YnI+CiA8L3A+CjwvZGl2Pgo8YnI+Cjxicj4KCg==